package br.ufpe.cin.rgms.linha.persistencia;

import java.util.HashMap;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import br.ufpe.cin.rgms.base.Dao;
import br.ufpe.cin.rgms.base.Persistence;
import br.ufpe.cin.rgms.linha.modelo.Linha;

public class DaoLinha extends Dao<Linha> {

	public DaoLinha() {
		super(Linha.class);
	}

	@Override
	protected String getFirstAtributoDeOrdenacao() {
		return "nome";
	}

	@Override
	protected String getSecondAtributoDeOrdenacao() {
		// TODO Auto-generated method stub
		return "descricao";
	}

	public Linha getLinha(int idLinha) {
		Linha retorno = null;

		Criteria criteria = Persistence.getInstance().getSession().createCriteria(Linha.class);

		criteria.add(Restrictions.eq("id", idLinha));

		List<Linha> lista = criteria.list();

		if (lista.size() > 0) {
			retorno = lista.get(0);
		}

		return retorno;
	}

	public List<Linha> getLinhas(HashMap<String, String> formFields) {
		Criteria criteria = Persistence.getInstance().getSession().createCriteria(Linha.class);

		criteria.addOrder(Order.asc(this.getFirstAtributoDeOrdenacao()));
		criteria.addOrder(Order.asc(this.getSecondAtributoDeOrdenacao()));

		for (String campo : formFields.keySet()) {
			String like = "%" + formFields.get(campo) + "%";

			criteria.add(Restrictions.ilike(campo, like));
		}

		return criteria.list();
	}
}
